﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class Novo_Default : System.Web.UI.Page
{

    ChamadosDAO ChamadoDAO = new ChamadosDAO();
    TecnicoDAO tc = new TecnicoDAO();
    PrioridadeDAO pr = new PrioridadeDAO();

    protected void Page_Load(object sender, EventArgs e)
    {
        //======    Verifica se o login de acesso é um tecnico cadastrado no sistema    =======
        //======    Se não for técnico, limita alguns campos.     =======
        if (tc.Verificar())
        {
            DdlTecnico.Enabled = DdlSituacao.Enabled = DdlPrioridade.Enabled = false;
            DdlTecnico.CssClass = DdlSituacao.CssClass = DdlPrioridade.CssClass = "fechado";
            if (!IsPostBack)
            {
                DdlPrioridade.Items.Add(new ListItem { Text = "Você não tem permissão para alterar.", Value = "2" });
                DdlSituacao.Items.Add(new ListItem { Text = "Você não tem permissão para alterar.", Value = "1" });
                DdlTecnico.Items.Add(new ListItem { Text = "Você não tem permissão para alterar.", Value = "1" });
            }
        }
        else
        {
            if (!IsPostBack)
            {
                tc.DropDownList(DdlTecnico);
                ChamadoDAO.DropDownList(DdlSituacao);
                pr.DropDownList(DdlPrioridade);
            }
        }
        //======    Define titulo para a página     ========
        Page.Title = ".: Novo Chamado :.";
        if (!IsPostBack)
        {
            Random rd = new Random();
            ImgChamado.ImageUrl = "~/Images/Default" + rd.Next(1, 3).ToString() + ".jpg";
        }
        //======    Popula DropDownList's da página     ======       
    }
    protected void BtFinaliza_Click(object sender, EventArgs e)
    {
        //==========    Cria o chamado em memória   =========
        Chamados Chamado = new Chamados();
        //==========    Preenche campos do chamado  =========
        Chamado.Solicitante = TbSolicitante.Text.Trim();
        Chamado.Estacao = TbEstacao.Text.Trim();
        Chamado.Assunto = TbAssunto.Text.Trim();
        Chamado.Tecnico = new Tecnico { Login = DdlTecnico.SelectedValue.ToString() };
        Chamado.Situacao = new Situacao { Codigo = Convert.ToInt32(DdlSituacao.SelectedValue.ToString())};
        Chamado.Prioridade = new Prioridade { Codigo = Convert.ToInt32(DdlPrioridade.SelectedValue.ToString()) };
        Chamado.Reclamacao = TbReclamacao.Text.Trim();
        //==========    Verifica se usuário upou alguma imagem  ==========
        if (Session["UrlImagem"] != null)
        {
            //======    Se upou, joga o caminho dela no banco   ==========
            Chamado.UrlImagem = Session["UrlImagem"].ToString();
            Session.Remove("UrlImagem");
        }
        //==========    Coloca chamado dentro de ChamadoDAO     ==========
        ChamadoDAO.Chamado = Chamado;
        //==========        Persistem chamado em banco          ==========
        if (ChamadoDAO.Salvar())
        {
            //========  mensagem de sucesso     =========
            LMsg.Text = "Chamado inserido com sucesso!";
        }
        else
        {
            //========  mensagem de erro        =========
            LMsg.Text = "Ocorreu algum erro com o banco de dados, tente novamente mais tarde!" + Chamado.ToString(); ;
        }
    }
    public static string RetiraAcentos(string texto)
    {
        string ComAcentos = "!@#$%¨&*()-?:{}][ÄÅÁÂÀÃäáâàãÉÊËÈéêëèÍÎÏÌíîïìÖÓÔÒÕöóôòõÜÚÛüúûùÇç ";

        string SemAcentos = "_________________AAAAAAaaaaaEEEEeeeeIIIIiiiiOOOOOoooooUUUuuuuCc_";

        for (int i = 0; i < ComAcentos.Length; i++)

            texto = texto.Replace(ComAcentos.ToString(), SemAcentos.ToString()).Trim();


        return texto;
    }
    protected bool ExtensaoOk(string Extensao)
    {
        bool OK = false;
        //======    extensoes permitidas    ======
        string[] ExtensoesPermitidas = new string[5];
        ExtensoesPermitidas[1] = ".jpg";
        ExtensoesPermitidas[2] = ".gif";
        ExtensoesPermitidas[3] = ".png";
        ExtensoesPermitidas[4] = ".jpeg";
        ExtensoesPermitidas[0] = ".bmp";

        for (int i = 0; i < ExtensoesPermitidas.Length; i++)
        {
            if (ExtensoesPermitidas[i] == Extensao)
                OK = true;
        }
        return OK;
    }
    protected void BtEnviarImagem_Click(object sender, EventArgs e)
    {
        if (FUImagem.HasFile)
        {
            //======    strings necessarias      ======
            string Arquivo = FUImagem.PostedFile.FileName;
            string Extensao;
            string Diretorio;
            Banco bd = new Banco();
            int Codigo = bd.UltimoCodigo("SELECT codigo FROM chamados ORDER BY codigo DESC Limit 1");

            //======    testa tamanho da imagem é menor que 10MB    ======
            if (Convert.ToInt32(FUImagem.FileContent.Length.ToString()) < 10485760)
            {
                //======    Recupera extensão do arquivo    ======
                Extensao = Path.GetExtension(Arquivo).ToLower();

                if (ExtensaoOk(Extensao))
                {
                    //======    Diretorio onde o arquivo será salvo
                    Diretorio = Server.MapPath("~/Anexos/") + "Imagem-do-Chamado-" + Codigo + Extensao;

                    //======    Verifica se ja existe um arquivo igual e apaga  ======
                    if (File.Exists(Diretorio))
                    {
                        File.Delete(Diretorio);
                    }
                    //======    Salvar o arquivo no diretorio   =======
                    try
                    {
                        FUImagem.SaveAs(Diretorio);
                    }
                    catch
                    {
                        LbMsgImagem.Text = "Erro ao enviar imagem.";
                    }
                    //======    Cria Session com o caminho da imagem    ======
                    if (Session["UrlImagem"] != null)
                    {
                        Session.Remove("UrlImagem");
                    }
                    Session["UrlImagem"] = "~/Anexos/" + "Imagem-do-Chamado-" + Codigo + Extensao;
                    ImgChamado.ImageUrl = Session["UrlImagem"].ToString();

                }
                else
                    LbMsgImagem.Text = "Extensão " +Extensao+" inválida, serão permitidas imagens .jpg, .png, .gif, .jpeg, .bmp";
            }
            else
                 LbMsgImagem.Text = "Imagem muito grande, o tamanho máximo é 10MB.";
        }   
    }
}